#!/usr/bin/env python
# -*- coding: utf-8 -*-

from abc import ABC, abstractmethod
from typing import Dict, List, Any, Optional


class BasePublisher(ABC):
    """
    发布器基类，定义发布器的基本接口
    只包含核心抽象方法，其他所有逻辑都在子类中实现
    """
    
    def __init__(self):
        """初始化发布器，子类可重写"""
        pass
    
    @abstractmethod
    def publish(self, article_data: 'ArticleData') -> Dict[str, Any]:
        """
        发布文章
        :param article_data: 文章数据对象
        :return: 包含发布结果的字典，格式为:
            {
                'success': bool,  # 是否成功
                'post_id': Optional[int],  # 文章ID（成功时）
                'error': Optional[str],  # 错误信息（失败时）
                'url': Optional[str]  # 文章URL（可选）
            }
        """
        pass